home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 21 / CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso / CUCD / Programming / Python-1.4 / Source / Amiga / Python_netlib / sana2perror.c < prev    next >
C/C++ Source or Header  |  1994-09-29  |  2KB  |  74 lines

  1. RCS_ID_C="$Id: sana2perror.c,v 4.2 1994/09/29 23:09:02 jraja Exp $";
  2. /*
  3.  *      sana2perror.c - print SANA-II error message
  4.  *
  5.  *      Copyright © 1994 AmiTCP/IP Group, 
  6.  *                       Network Solutions Development Inc.
  7.  *                       All rights reserved.
  8.  */
  9.  
  10. #include <stdio.h>
  11.  
  12. #include <devices/sana2.h>
  13. #include <net/sana2errno.h>
  14.  
  15. /****** sana2.lib/sana2perror *************************************************
  16.  
  17.     NAME
  18.     sana2perror - print SANA-II device error messages
  19.  
  20.     SYNOPSIS
  21.     #include <devices/sana2.h>
  22.  
  23.     sana2perror(banner, ios2request)
  24.  
  25.     void sana2perror(const char *, struct IOSana2Req *)
  26.  
  27.     FUNCTION
  28.     The sana2perror() function finds the error message corresponding to
  29.     the error in the given SANA-II IO request and writes it, followed by a
  30.     newline, to the stderr.  If the argument string is non-NULL it is
  31.     preappended to the message string and separated from it by a colon and
  32.     space (`: ').  If string is NULL only the error message string is
  33.     printed.
  34.  
  35.     NOTES
  36.     The sana2perror() function requires the stdio functions to be linked.
  37.  
  38.     SEE ALSO
  39.     Sana2PrintFault()
  40.  
  41. *******************************************************************************
  42. */
  43.  
  44. void 
  45. sana2perror(const char *banner, struct IOSana2Req *ios2)
  46. {
  47.   register WORD err = ios2->ios2_Req.io_Error;
  48.   register ULONG werr = ios2->ios2_WireError;
  49.   const char *errstr;
  50.  
  51.   if (err >= sana2io_nerr || -err > io_nerr) {
  52.     errstr = io_errlist[0];
  53.   } else { 
  54.     if (err < 0) 
  55.       /* Negative error codes are common with all IO devices */
  56.       errstr = io_errlist[-err];
  57.     else 
  58.       /* Positive error codes are SANA-II specific */ 
  59.       errstr = sana2io_errlist[err];
  60.   }
  61.  
  62.   if (werr == 0 || werr >= sana2wire_nerr) {
  63.     if (banner != NULL)
  64.       fprintf(stderr, "%s: %s\n", banner, errstr);
  65.     else
  66.       fprintf(stderr, "%s\n", errstr);
  67.   } else {
  68.     if (banner != NULL)
  69.       fprintf(stderr, "%s: %s (%s)\n", banner, errstr, sana2wire_errlist[werr]);
  70.     else
  71.       fprintf(stderr, "%s (%s)\n", errstr, sana2wire_errlist[werr]);
  72.   }
  73. }
  74.